#pragma once
#include <QObject>


namespace NOpenHardwareMonitor {

namespace NHardware {

class ISensor
{
public:
	enum class EType
	{
		Voltage,
		Clock,
		Temperature,
		Load,
		Fan,
		Flow,
		Control,
		Level,
		Factor,
		Power,
		Data,
		SmallData,
		Throughput,
	};


protected:
	~ISensor() {  }


public:
	virtual void Release() = 0;


public:
	virtual EType GetType() const = 0;

	virtual void ResetMin() = 0;
	virtual void ResetMax() = 0;

	virtual qint32 GetHashCode() const = 0;
	virtual QString GetIdentifier() const = 0;
	virtual qint32 GetIndex() const = 0;
	virtual bool IsDefaultHidden() const = 0;
	virtual float GetMax() const = 0;
	virtual float GetMin() const = 0;
	virtual QString GetName() const = 0;
	virtual float GetValue() const = 0;
};

}}


